package com.yidu.BusinessData.mapper;

import com.yidu.BusinessData.entity.MarketData;
import com.yidu.BusinessData.entity.Security;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;
import java.util.Map;

/**
 * @author 任俊杰
 * @version 1.0
 * @date 2022/12/5
 */
@Mapper
public interface MarketDataMapper {

    /**
     * 查询行情数据所有信息
     * @param map 行情数据集合对象
     * @return 返回一个集合
     */
    @Select("SELECT md.`marketId`,s.`securityId`, s.`securityName`,md.`time`,md.`openingPrice`,md.`closingPrice`,md.`Remark` FROM marketData md INNER JOIN SECURITY s ON md.`securityId`=s.`securityId` WHERE 1=1 AND s.`securityId` LIKE #{securityId} and md.`TIME` like #{TIME} limit #{page},#{limit};")
    public List<MarketData>selectMarket(Map map);


    /**
     * 分页查询行数，根据条件来模糊查询后的行数
     * @param map 行情数据集合对象
     * @return 返回一个int类型的参数
     */
    @Select("select count(*) from marketData  where 1=1 and securityId like #{securityId} and TIME like #{TIME}")
    public int selectMarketCount(Map map);


    /**
     * 获取最大id的方法
     * @return 返回一个String类型的参数
     */
    @Select("SELECT marketId FROM marketData ORDER BY marketId  DESC LIMIT 1")
    public String selectMaxFundId();

    /**
     * 删除（单个删除和多个删除）
     * @param marketId 行情id
     * @return list 集合
     */
    public int deleteMarket(List marketId);


    /**
     * 行情数据新增
     * @param marketData 行情数据实体类
     * @return 返回一个int类型的参数
     */
    @Insert("insert into marketData values(#{marketId},#{securityId},#{TIME},#{openingPrice},#{closingPrice},#{fundId},#{Remark})")
    public int addMarket(MarketData marketData);


    /**
     * 行情数据修改
     * @param marketData 修改的行情对象
     * @return 返回一个int类型的参数
     */
    @Update("update marketData set securityId=#{securityId},TIME=#{TIME},openingPrice=#{openingPrice},closingPrice=#{closingPrice},Remark=#{Remark} where marketId=#{marketId}")
    public int updateMarket(MarketData marketData);


    /**
     * 下拉表格的查询证券信息
     * @param map 集合对象
     * @return list 返回一个list集合参数
     */
    @Select("select * from security where 1=1 ${term} limit #{page},#{limit};")
    public List<Security>selectSecurity(Map map);


    /**
     * 下拉表格查询证券信息的行数
     * @param map 集合对象
     * @return 返回一个int类型的参数
     */
    @Select("select count(*) from security where 1=1 ${term}")
    public int selectSecurityCount(Map map);
}
